Skip to content

add experimental flag on plugins to disable them by default #5985

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

rochdev
Copy link
Member

@rochdev rochdev commented Jun 27, 2025

What does this PR do?

Add experimental flag on plugins to disable them by default.

Motivation

Right now only disabling the instrumentation is possible by default. However, this is problematic because users interact with plugins, not instrumentation, so they would only know the name for the plugins. Also, instrumentations do more than just back a single plugin, so when the goal is to disable just tracing for a library for example, it shouldn't also disable any other existing features already built on top of the same instrumentation. Doing this at the plugin level instead solves these issues and provides a better and more granular user experience that focuses only on the functionality.

Copy link

github-actions bot commented Jun 27, 2025

Overall package size

Self size: 9.69 MB
Deduped: 109.27 MB
No deduping: 109.65 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.0.1 | 20.3 MB | 20.3 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.9.0 | 9.77 MB | 10.14 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.14.2 | 122.36 kB | 850.93 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.9 | 25.11 kB | 25.11 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented Jun 27, 2025

Codecov Report

Attention: Patch coverage is 77.77778% with 2 lines in your changes missing coverage. Please review.

Project coverage is 82.77%. Comparing base (782a8e1) to head (712addc).
Report is 3 commits behind head on master.

Files with missing lines Patch % Lines
...s/datadog-instrumentations/src/helpers/register.js 60.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5985      +/-   ##
==========================================
- Coverage   82.81%   82.77%   -0.05%     
==========================================
  Files         476      476              
  Lines       19658    19652       -6     
==========================================
- Hits        16280    16267      -13     
- Misses       3378     3385       +7     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter
Copy link

pr-commenter bot commented Jun 27, 2025

Benchmarks

Benchmark execution time: 2025-07-21 21:51:04

Comparing candidate commit 712addc in PR branch experimental-plugins with baseline commit 782a8e1 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1272 metrics, 51 unstable metrics.

@datadog-datadog-prod-us1
Copy link

Datadog Report

Branch report: experimental-plugins
Commit report: 2f65b19
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 1257 Passed, 0 Skipped, 19m 13.67s Total Time

@rochdev rochdev force-pushed the experimental-plugins branch from 2e3f1b8 to 712addc Compare July 21, 2025 21:42
@rochdev rochdev marked this pull request as ready for review July 21, 2025 21:56
@rochdev rochdev requested review from a team as code owners July 21, 2025 21:56
@datadog-datadog-prod-us1
Copy link

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 712addc | Was this helpful? Give us feedback!

Copy link
Collaborator

@watson watson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it's just me, but I find the PR description a little confusing, so I'm not sure exactly what it's supposed to do in details. E.g. as I wrote in one of my comments below, it seems like this PR is also deprecating a disabled property, though I'm not sure.

@@ -25,20 +25,15 @@ const names = Object.keys(hooks)
const pathSepExpr = new RegExp(`\\${path.sep}`, 'g')

const disabledInstrumentations = new Set(
DD_TRACE_DISABLED_INSTRUMENTATIONS?.split(',').map(name => normalizePluginEnvName(name, true)) ?? []
DD_TRACE_DISABLED_INSTRUMENTATIONS?.split(',') ?? []
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need for a fallback. These all result in an empty set: new Set(), new Set([]), new Set(undefined)

Suggested change
DD_TRACE_DISABLED_INSTRUMENTATIONS?.split(',') ?? []
DD_TRACE_DISABLED_INSTRUMENTATIONS?.split(',')

@@ -75,10 +69,6 @@ for (const packageName of names) {
if (hook !== null && typeof hook === 'object') {
if (hook.serverless === false && isInServerlessEnvironment()) continue

// some integrations are disabled by default, but can be enabled by setting
// the DD_TRACE_<INTEGRATION>_ENABLED environment variable to true
if (hook.disabled && !reenabledInstrumentations.has(normalizedPackageName)) continue
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've not been able to find any hooks that are disabled by default currently. Am I correct in assuming that this was just an option, but that we currently didn't use it?

Does this PR also remove support for the disabled property on hooks?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants